﻿#define _CRT_SECURE_NO_WARNINGS

//#include<stdio.h>
//int main()
//{
//	printf("file:%s line:%d\n", __FILE__, __LINE__);
//	return 0;
//}
//#define name stuff

//#define MAX 1000
//int a[100];

//#define wl while //为 while 这个关键字，创建一个简短的名字
//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int b = 5;
//	wl(a-- > b)
//		printf("%d ", a);
//}

//#define do_forever for(;;) //用更形象的符号来替换一种实现，这个for循环等价于 while(1)
//#include<stdio.h>
//int main()
//{
//	do_forever
//		printf("1");
//
//}

//#define CASE break;case //在写case语句的时候自动把 break写上。
//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	switch (a)
//	{
//		CASE 10:
//			printf("10");
//		CASE 1:
//			printf("1");
//		CASE 2:
//			printf("2");
//	}
//	return 0;
//}

////如果定义的 stuff 过⻓，可以分成几行写，
////除了最后一行外，每行的后面都加一个反斜杠(续行符)。
//#define DEBUG_PRINT printf("file:%s\tline:%d\t \
// date:%s\ttime:%s\n" ,\
// __FILE__,__LINE__ , \
// __DATE__,__TIME__ )
//int main()
//{
//	if (condition)
//		max = 1000;;
//	else
//		max = 0;
//}


//#define MAX(a, b) ( (a) > (b) ? (a) : (b) )
//#include<stdio.h>
//int main()
//{
//	int x = 5;
//	int y = 8;
//	int z = MAX(x++, y++);
//	printf("x=%d y=%d z=%d\n", x, y, z);//输出的结果是什么？
//	return 0;
//}

//#define MAX(a, b) ((a)>(b)?(a):(b))

//#define MALLOC(num ,type)\
// (type*)malloc(num * sizeof(type))
//
////使用
//MALLOC(10, int);//类型作为参数
////预处理器替换之后：
//(int*)malloc(10 * sizeof(int));

//int int_max(int x, int y)
//{
//	return x > y ? x : y;
//}
//float float_max(float x, float y)
//{
//	return x > y ? x : y;
//}

////宏定义
//#define GENERIC_MAX(type) \
//type type##_max(type x, type y)\
//{ \
//	return (x>y?x:y); \
//}
//
//GENERIC_MAX(int) //替换到宏体内后int##_max 生成了新的符号 int_max做函数名
//
//GENERIC_MAX(float) //替换到宏体内后float##_max 生成了新的符号 float_max做函数名
//
//#include<stdio.h>
//int main()
//{
//	//调用函数
//	int m = int_max(2, 3);
//	printf("%d\n", m);
//	float fm = float_max(3.5f, 4.5f);
//	printf("%f\n", fm);
//	return 0;
//}